package com.mmall.concurrency.example.aqs.phaser;

import java.util.concurrent.Phaser;

/**
 * 对每一个阶段进行自定义控制
 */
public class TravelPhaser extends Phaser {

    protected boolean onAdvance(int phase, int registeredParties) {
        switch (phase) {
            // 第1阶段，旅游前的集合
            case 0:
                System.out.println("出发前小组人员集合完毕，总人数："+getRegisteredParties());
                return false;
            // 第2阶段，景点 A 游玩
            case 1:
                System.out.println("景点 A 游玩结束");
                return false;
            // 第3阶段，景点 B 游玩
            case 2:
                System.out.println("景点 B 游玩结束");
                return false;
            // 第4阶段，旅游结束返程集合
            case 3:
                System.out.println("所有活动结束后小组人员集合完毕，总人数："+getRegisteredParties());
                return true;
            default:
                return true;
        }
    }
}

